package br.com.vendas;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import model.ItemProduto;
import model.Produto;
import br.com.constant.Action;

/**
 * Servlet implementation class ActionVenda
 */
@WebServlet("/ActionVenda")
public class ActionVenda extends HttpServlet {
	private static final long serialVersionUID = 1L;
	private List<ItemProduto> listaProdutos;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public ActionVenda() {
        super();
        
        listaProdutos = new ArrayList<ItemProduto>();
        listaProdutos.add(new ItemProduto(new Produto(0, "", 0), 0, 0));

     }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        String action = (String) request.getAttribute("action"); 
		


		if(action != null){
            listaProdutos = (List<ItemProduto>)request.getSession().getAttribute("listaProdutos");
		   // listaProdutos = (List<ItemProduto>)request.getAttribute("listaProdutos");
			int linha = Integer.parseInt((String) request.getParameter("linha"));
			
			//aki atualizo a quantidade de produtos de cada item produto 	
			if(action.equals(Action.QTD.toString())){
				atualizaQTDItemProduto((String) request.getParameter("value"), linha);	
			}else if(action.equals(Action.RMV.toString())){
				listaProdutos.remove(linha);				
			}else if(action.equals(Action.UPVALFIN.toString())){
				String valorFinal = (String) request.getParameter("value");
				listaProdutos.get(linha).setValorFinal(new Double(valorFinal));
			}
		}
		
		request.getSession().setAttribute("total", getValorTotalItens(listaProdutos));
		request.getSession().setAttribute("listaProdutos", listaProdutos);   
		response.sendRedirect("vendas.jsp");

	}
	
	/**
	 * Retorna o valor total do total de itens
	 * @return
	 */
	private Double getValorTotalItens(List<ItemProduto> listaProdutos){
		double total = 0;
		if(!listaProdutos.isEmpty()){
			for (ItemProduto itens : listaProdutos) {
				total += itens.getValorFinal(); 
			}
		}	
		return total;
	}
	
/*
	 * Metodo resposavel por atualizar a quantidade de cada item de produto 
	 * @param tipo
	 * @param linha
	 */
	private void atualizaQTDItemProduto(String tipo, int linha){
		if(tipo.equals("MIN")){
			if(listaProdutos.get(linha).getQuantidade() - 1 <= 0){
				listaProdutos.remove(linha);	
			}else{
				listaProdutos.get(linha).setQuantidade(listaProdutos.get(linha).getQuantidade() - 1);
			}
		}else{
			listaProdutos.get(linha).setQuantidade(listaProdutos.get(linha).getQuantidade() + 1);
		}
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
	}

}
